home *** CD-ROM | disk | FTP | other *** search
- ε PROGRAMACION 3Dπ
- ε By Skynetπ
- ε=============================================================================π
-
- Hola, en esta segunda parte de esta seccion, vamos a machacar las cosas que
- aprendimos en la δPHYMOSYS IIIπ. En primer lugar, os agradezco el interes que
- habeis tenido en esto, ya que han llegado bastantes E-mails, ademas hoy como
- prometi a algunos, metere mi lector de archivos de δ3D Studioπ...bueno, empece-
- mos!! :)
-
- Como vimos la semana pasada, aprendimos a crear una tercera dimension en nues-
- tro monitor, a crear pantallas virtuales, las matrices de las operaciones ba-
- sicas, crear campos de estrellas, etc...
-
- Hoy lo que vamos a hacer es a "coger" esos objetos 3D para meterlos en nuestra
- demo. Como los vamos a coger? bueno...pues de eso se encarga mi programa. El
- 3D Studio tiene una opcion para salvar los archivos en archivos δ3DSπ o δASCπ. Los
- archivos δASCπ son los que nos interesan, porque contienen la lista de vertices,
- poligonos y aristas. Para conocer un poco mas el formato vamos a abrir uno re-
- cortado:
-
- -----------------------------------------------------------------------------
- ΓAmbient light color: Red=0.039216 Green=0.039216 Blue=0.039216π
-
- ΓNamed object: "Object"π
- ΓTri-mesh, Vertices: 660 Faces: 1292π
- ΓVertex list:π
- ΓVertex 0: X: -90.999413 Y: 0.000003 Z: 22.282175π
- ΓVertex 1: X: -101.339294 Y: 0 Z: 22.282175π
- ΓVertex 2: X: -101.653366 Y: 0.000003 Z: 24.025192π
- ΓVertex 3: X: -102.086533 Y: 5.03 Z: 25.571856π
- Γ.π
- Γ.π
- Γ.π
- ΓVertex 659: X: 124.625061 Y: 13.499992 Z: 26.994728π
- ΓFace list:π
- ΓFace 0: A:1 B:0 C:121 AB:1 BC:1 CA:0π
- ΓSmoothing: 17π
- ΓFace 1: A:62 B:61 C:60 AB:1 BC:1 CA:0π
- ΓSmoothing: 17π
- ΓFace 2: A:63 B:62 C:60 AB:1 BC:0 CA:0π
- Γ.π
- Γ.π
- Γ.π
- ------------------------------------------------------------------------------
-
- Aunque no lo veamos ahora, el programa separa en paginas el archivo, cosa que
- no he depurado todavia y que por tanto se debe eliminar con un editor para que
- todo quede como si fuese una unica pagina. Despues podemos ver que el programa
- tiene numerados los vertices. Cada vertice contiene los tres valores en X,Y,Z
- y por tanto en nuestro programa hemos creado un δARRAYπ que almacenara variables
- con los campos X,Y y Z de forma que el Vertex 0 coincida en la posicion 0 del
- array, el Vertex 1 en la posicion 1...etc...
-
- Aqui tendremos que "retocar" algo tambien del archivo. Como para nuestro pro-
- grama vamos a realizar una conversion a 3D, la variable Y no puede ser nunca 0,
- y por tanto debe modificarse. Fijaros en el vertex 1, como veis tiene de valor
- 0. lo que haremos sera editarlo y dejarlo por ejemplo:
-
- ΓVertex 1: X: -101.339294 Y: 0.00010 Z: 22.282175π
-
- De forma que le pondremos todos los decimales que necesitamos (5 al menos),
- aproximando a su valor real. Con esto tambien tendremos que modificar el ver-
- tex 3 debido a que no llega ni a 5 decimales. Con su posterior modificacion
- quedara:
-
- ΓVertex 3: X: -102.086533 Y: 5.030000 Z: 25.571856π
-
- Y nuestro programa ya no tendra problemas.
-
- Para acabar de repararlo, el objeto que creamos, si sobrepasa las 80 unidades
- se saldra de pantalla, asi que podeis hacerlo pequeño y despues aumentarlo con
- el "δaumentadorπ" que he programado en uno de los procedimientos.
-
- Una vez comentados los errores que debemos evitar en el programa, pasamos a co-
- mo se ha realizado. Una vez hayamos insertado todos los vertices en el array
- lo que haremos es insertar los planos en otro array. Este array sera un array
- de una variable que tendra de campos A,B y C que son como se especifica un po-
- ligono en 3D Studio:
-
- ΓFace 0: A:1 B:0 C:121 AB:1 BC:1 CA:0π
-
- Esto significa que la δFACE 0π se compone por el vertice 1,0 y 121 como indican
- A, B i C que son los indicadores de poligonos. De esta forma creamos el poligo-
- no mas veloz que es el triangulo. (Es el mas rapido debido a que a la hora de
- rellenarlo no tiene problemas de intersecciones de lineas, ya que en un trian-
- gulo nunca podremos tener ese problema.
-
- Bueno, una vez insertado en la memoria, ahora tendremos que crearlo, lo cual
- puede ser visto en el codigo en δPASCALπ de φSkynet.pasπ
-
- Ademas he creado algunos ejemplos de archivos δASCπ.
-
- Ah!! Si mirais bien el codigo fuente, vereis que utilizo una libreria de musi-
- ca, esta es para incorporarle sonido a la rotacion...esto lo explicare en el
- proximo numero. Espero que os sirva para algo, o en vuestras demos... si lo
- utilizais, almenos nombradnos! :)
-
- Bueno, nos vemos el próximo número con efectos graficos....
- =======================================================================
- ∞Skynet Rulez!π
- ∞amarfer@alufis34.ffisic.uv.esπ
-